﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Novapangeia.Dominio;
using Novapangeia.Negocio;
using System.Collections.Generic;
using System.IO;

namespace Novapangeia.Web
{
    public partial class Praca : LoggedPage
    {
        protected GerenciadorTropas GerenciadorTropas;
        protected Usuario UsuarioAtual;
        protected List<Tropa> TropasAtacantesPotenciais;
        protected IList<Tropa> TropasOrigemRemanejamentos;
        protected IList<Tropa> TropasDestinoRemanejamentos;
        StringWriter StringWriter;
        protected Html32TextWriter HtmlWriter;
        protected string DivTropas;

        protected void Page_Init(object sender, EventArgs e) 
        {
            GerenciadorTropas = new GerenciadorTropas();
            Usuario UsuarioAtual = GerenciadorUsuario.consultarUsuarioDaSessao();
            List<Tropa> TropasAtacantesPotenciais = UsuarioAtual.tropas.Where(t => !(t.TropaVazia() || t.Guarda)).ToList();
            IList<Tropa> TropasOrigemRemanejamentos = UsuarioAtual.tropas.Where(t => !t.TropaVazia()).ToList();
            IList<Tropa> TropasDestinoRemanejamentos = UsuarioAtual.tropas;
            StringWriter = new StringWriter();
            HtmlWriter = new Html32TextWriter(StringWriter);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            Usuario UsuarioAtual = GerenciadorUsuario.consultarUsuarioDaSessao();
            ViewTropas.InnerHtml = HtmlHelper.DivTropas(UsuarioAtual);

            seletorAtacante.DataSource = TropasAtacantesPotenciais;
            seletorAtacante.DataBind();

            seletorOrigem.DataSource = TropasOrigemRemanejamentos;
            seletorOrigem.DataBind();

            seletorDestino.DataSource = TropasDestinoRemanejamentos;
            seletorDestino.DataBind();

            if(Request.Params["coordenada_x"] != null && Request.Params["coordenada_y"] != null)
            {
                int coordenada_x;
                int coordenada_y;
                Int32.TryParse(Request.Params["coordenada_x"], out coordenada_x);
                Int32.TryParse(Request.Params["coordenada_Y"], out coordenada_y);
                txtCordenadaX.Text = coordenada_x.ToString();
                txtCordenadaY.Text = coordenada_y.ToString();
            }
        }

        protected void btnCriarTropa_Click(object sender, EventArgs e)
        {
            Usuario u = GerenciadorUsuario.consultarUsuarioDaSessao();
            GerenciadorTropas.CriarTropa(u, txtNomeTropa.Text);
        }

        protected void btnRemanejar_Click(object sender, EventArgs e)
        {
            Usuario u = GerenciadorUsuario.consultarUsuarioDaSessao();
            int origemId = Convert.ToInt32((string) seletorOrigem.SelectedValue);
            int destinoId = Convert.ToInt32((string) seletorDestino.SelectedValue);
            int quantidade = 0;
            if (txtQuantidadeUnidadesRemanejadas.Text != null && txtQuantidadeUnidadesRemanejadas.Text != "")
            {
                quantidade = Convert.ToInt32((string) txtQuantidadeUnidadesRemanejadas.Text);
            }
            //switch (SeletorTipo.SelectedValue){
            //    case "0":
            //        GerenciadorTropas.remanejarTropas(origemId,destinoId,quantidade,Unidade.TipoUnidade.Lanceiros);
            //        break;
            //    case "1":
            //        GerenciadorTropas.remanejarTropas(origemId, destinoId, quantidade, Unidade.TipoUnidade.Espadachins);
            //        break;
            //    case "2":
            //        GerenciadorTropas.remanejarTropas(origemId, destinoId, quantidade, Unidade.TipoUnidade.Arqueiros);
            //        break;
            //    case "3":
            //        GerenciadorTropas.remanejarTropas(origemId, destinoId, quantidade, Unidade.TipoUnidade.Cavaleiros);
            //        break;
            //}
        }

        protected void btnAtacar_Click(object sender, EventArgs e)
        {
            int defensorX;
            int defensorY;
            int tropaAtacanteId;
            
            tropaAtacanteId = Convert.ToInt32((string) seletorAtacante.SelectedValue);
            defensorX = Convert.ToInt32((string) txtCordenadaX.Text);
            defensorY = Convert.ToInt32((string) txtCordenadaY.Text);
            Usuario defensor = RepositorioUsuario.ConsultarPorCordenadas(defensorX,defensorY);
            Combate combate = new Combate(tropaAtacanteId, defensor.Id);
            //ClientScript.RegisterStartupScript(typeof(Page), "alertaSucesso", "<script type=text/javascript> alert('Operação realizada com sucesso.'); </script>");
        }
    }
}